#include "数据库.h"


sqlite3 *openDatabase(char *pName)
{
     sqlite3 *db = NULL; // 定义一个数据库的指针
     int data = -1;

     // 打开指定的数据库文件，如果不存在将创建一个同名的数据库文件
     data = sqlite3_open(pName, &db);
     if (data < 0)
     {
          printf("create testsqlite failure:%s\n", sqlite3_errmsg(db)); // 创建失败
          return NULL;
     }
     else
     {
          printf("create testsqlite successfuly\n"); // 创建成功
          return db;
     }
}

void closeDatabase(sqlite3 *db)
{
     sqlite3_close(db); // 关闭数据库
}

void exec_sql(sqlite3 *db, char *pSql)
{
     char *pMsg = NULL; // 指向错误信息的指针，如果没有错误该指针会一直等于NULL
     sqlite3_exec(db, pSql, 0, 0, &pMsg);
     if (pMsg != NULL)
     {
          printf("错误信息是：%s\n", pMsg);
     }
     else
     {
          printf("执行SQL语句成功！\n");
     }
}

QR query_sql(sqlite3 *db, char *pSql)
{
     int data;
     char *msg = 0;
     QR qr;

     // char * str[100]={"hello","world"...};
     // Result[0];

     data = sqlite3_get_table(db, pSql, &qr.result, &qr.row, &qr.col, &msg);
     // 参数1：数据库的指针
     // 参数2：sql语句
     // 参数3：查到的结果数组
     // 参数4：结果中有多少行记录
     // 参数5：结果中有多少列
     // 参数6：错误信息，如果有的话

     if (msg != NULL)
     {
          printf("查询数据库出错了：%s\n", msg);
          qr.result = NULL;
          qr.row = -1;
          qr.col = -1;
     }
     else
     {
          return qr;
          // printf("查询数据库成功！一共有%d行 %d列\n",row,column);
          // for (size_t i = 4; i < row*column+4; )
          // {
          //      printf("%s %s %s %s\n",Result[i],Result[i+1],Result[i+2],Result[i+3]);
          //      i+=4;
          // }

          // printf("%s %s %s %s\n",Result[0],Result[1],Result[2],Result[3]);
          // printf("%s %s %s %s\n",Result[4],Result[5],Result[6],Result[7]);
          // printf("%s %s %s %s\n",Result[8],Result[9],Result[10],Result[11]);
     }
}

void printQuery(QR qr)
{
     printf("查询数据库成功！一共有%d行 %d列\n", qr.row, qr.col);
     for (size_t i = qr.col; i < qr.row * qr.col + qr.col;)
     {
          // printf("%s %s %s %s\n", qr.result[i], qr.result[i + 1], qr.result[i + 2], qr.result[i + 3]);
          for (size_t j = 0; j < qr.col; j++)
          {
               printf("%s ",qr.result[i+j]);
          }
          printf("\n");
          i += qr.col;
     }
}